<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // Object.create(prototype,descriptors)
        // 创建一个新的对象，使用其他对象的原型创建对象
        // prototype提供构建对象时的原型参考
        //     取值可以是一个（实例）对象，新创建的对象会以该实例作为模板，同时获取该实例的所有属性
        //     取值可以是一个固定的原型，新创建的对象会以该原型作为模板
        //     取值为null，创建一个没有原型的特殊对象

        function Student(name){
            this.name=name;
        }
        Student.prototype.say=function(){
            console.log("hello");
        };
        var stu=new Student("alice");
        var u1=Object.create(stu);
        console.log(u1);
        console.log(u1.name);
        console.log(Object.getPrototypeOf(u1));

        var u2=Object.create(Student.prototype,{
            username:{
                value:"haha",
                writable:true,
                enumerable:true,
                configurable:true
            }
        });
        console.log(u2);
        u2.say();

        var info="嘻嘻";
        var u3=Object.create(null,{
            name:{
                value:"cici",
                writable:true,
                enumerable:true,
                configurable:true
            },
            age:{
                get(){
                    return info;
                },
                set(val){
                    info=val;
                },
                enumerable:true,
                configurable:true
            }
        });
        console.log(u3);
        console.log(Object.getPrototypeOf(u3));
        
    </script>
</head>
<body>
    
</body>
</html>